1. Field
Embodiments generally relate to image processing, and particularly to color correction.
2. Background Discussion
Digital image editing can include color transfer scenarios, where a user wants to impart color characteristics of one image to another image. In one example application, users may want to merge partially overlapping satellite imagery from different providers to generate a large digital map. Images included in this imagery may have different exposure and color balance values. For example, the images may have been taken at different times of a day. Furthermore, real world objects in the images may have changed due to changing seasons or even human construction. Without proper pre-processing, merging imagery from multiple sources may lead to a ‘patchy’ result, where images have different and/or inconsistent color characteristics.
In another example application, users may want to enhance user captured digital images by looking at examples of other images. Given images capturing a similar scene, a user may want to process an image captured by the user so that the image appears as a professionally captured and a more aesthetically pleasing image. Such processing can be significantly harder than the previous exemplary application because it does not have the benefit of spatially overlapping information, which can serve as an important heuristic on how to correspond colors between two different images.
Transferring colors from one image to another can be a challenging task. This is partly because a metric that can measure the likeliness of a “color mood” in an image, while tolerating image variations, is difficult to define explicitly.
A very simple approach to accomplish color transfer is to match an average color and its standard deviation of two images. This approach works well when two images contain similar portions or proportions of colors. However, limitations of this approach become evident when the proportions of color between the images are varied. For example, there may be two images, each of the ocean and a beach, where one image's colors are to be used to enhance the other image's colors. A first image may contain a 70% ocean region and a 30% beach region, while a second image may contain a 30% ocean region and a 70% beach region. Using the conventional approach just described, matching the colors would yield a new image on which the average color shifts the blue color of the ocean in the first image into an undesirable yellow-ish blue color because of the varying color proportions between the images. Equalizing an image color histogram also leads to similar artifacts.
Other approaches break either the images or the color space into segments for refined color matching. In the above example, a more sophisticated algorithm would match the blue color of the ocean and the yellow color of the beach separately, and thus attempt to avoid substantial shifting of the blue color of the ocean to yellow or vice-versa. However, when dealing with images with more than two distinguishable colors, matching colors for color transfer becomes even more challenging. Such matching has usually been done in a greedy way, where colors closest to each other under some metric are paired together. This often leads to limited options and less satisfying results. Although color pair search can be expanded by considering multiple matching candidates for each color, it is not always possible to tell which combination of color pairing is better. A metric on how well colors of images match remains elusive.